addHook("LinedefExecute", function(line, mo, sector)
	if mo.type == MT_PLAYER
		P_BlackOw(mo.player)
	end
end, "JM_EXPLOD")

//lua by blacknide and tweaks by enes2gamer

                                     /*******************=                                          
                                *#*****+++*+*++++****+++***+**#                                     
                            **+++++++++++++++++++++++++++++++++++++                                 
                         *+++++++++++++++++++++++++++++++++++++=====+*+                             
                     +*+===+++++++++++++++++++++++++++++++++++====-----=*+                          
                  ++=-=====+++**++++++++++++++++++++++++++++=======-----==*#                        
                +=----====+*+=====+*#+============================------===*%#                      
              ++------=+**===*#*+*#+=============================------====+#%#+                    
            *+==-----+**+-=##*=+##====+#+========================----++==+++#%%#*                   
           *+=====++*+#==+##==*##+===*#*=========*=============+#*+====+*++*%%%%**                  
         **+**=+*****#==*##==*%%*==+#%#+++++*+++#+===+====*+=====+##*++++*#%%%%%#**                 
        *##*++*#*##*#==*%#+=*%%#+++#%%#+++#%*++*%++++**++++#++++++*#%#*+++*%%%%###+*                
      *****++#%*##*#++*%%*+*%%%*++*%%%+++*%%+**##+++*##*+*+*#*+++++*%%%#*++*%%%%##*+                
    +***#+=*%#+#%*#*+*#%#++##%#+++#%%#++*%%%+*#%*++**%#*+***%#**++++#%%%#*+=*%%%#**++               
   *+*+#*=+#%+#%#*#**#%#++##%%*++*#%%*++*%%*+*#%*+**#%##*+*+#%**#++++#%%%**+=#%%#**++               
  ***+*#-+#%+*%#+#*+*%%#++#*%#===*#%#===#%%++*#%+=#*#%*#%+#+*%%+*#**+*%%##**+=####**++              
 ***+*#-=*#*+#*#+#***%#+=*#*%*--=**%#--+*#%=**#%=-#+#%**%#***%%*+##**+#%%*#++==###**++              
 **#+#*-+#*++#*+*#++*%#-=*+*%+--=**#%--+*#%=+*#%==#=#%*+%%**+#*#=+%*+++%%**+++-####*++              
=##+*#=-**+=*+*=**++*##-=*+*%+--+**#%==+*#%***##==#=#%#=#%#*+#**+-##++=%##+*+*=+####**              
**+*##=+#+++#+*=#*++*#*-=*+##*==***#+=+**#%#**#*=+#+#%*=*%%#+**+*-+#++++%#****+=#%%##*=             
#+**%*+#*++*#+#=#*++*##=+**#**++**#%-++**#%-**#++*#*#%+++###**#+#=+#*+*+%##*#*#+#%%##*#             
****%*+#*++#**#+#***###++**#+#**###%-#+**#%-#*#*%%%%%%%%%@%%###+#++##*#*#%#*#*#**%%%#+*             
-**#%**%***#**#*##**###*+##%%%#####%-++***%+=##%**%%%@%%##%##%%##++##*#*%%#*#*#**%%%#**             
  *##*#%***##*#*##**#######%%%%%@@%%--**#*%%-=+**@@@@@@@@@@%#**##**##*##%%%*#####%%%#**             
   #%##%*#%%#*%*#%%#%%%#+=#@@@@@@@@@*::::---:::*@@+@@@@@@@@@@#+-=*#####%%%%*#%%%*#%%%**             
    #*  *#%%%%%%%%###%%#+#@@@@@@@@@@%*::::::::=+#--@@@@@@@@@@@%+--##%%%%%%%%%%%%#*%%%*+*            
           =*#*%%%###*%#+@%+@@@@@@-*@:::::::::::::-@@@@@@#-%@**%+-*##*%#%%%%#%%%#*%%%#=*            
            ##+%%%###*%%@#-+@@@@@@@@@:::::::::::...@@@@@@@@@@*-#+=*##*%#%%%%#%%%#*#%%#+*            
            ##+%%%####%@@+:=@@@@@@@@@-::::::::::...@%%@@@@@@@#-::**##*#*%%%##%%%#*#%##+#            
            *#*#%%*#*##%*=.:@@%@@@@@@.:::::::::::..-@#%%@%%%@+..:#*#**#*%%%##%%%#+####**#           
            ****%%*#*###=:...@%%%%%@==::::::::::::-+#%@@@@@@+:=-:**#**#*%%%##%###+*###*+#           
            ****%%*****#+:-=::-*@%+:::::::::::::::::------------=+*#****#%%*#####+*#*##+#           
            ****#%**#**#+:::::::::::::::::::::::::-:::::--------*+*#+**##%#*#####+*#*##=**          
           =+*+*##**#**#+::::::::::::::::::::::::::::--::-:-----#=**+*+##%#*####*+*#+##=**          
           ++*+*##++#*+#*:::-:::::::.............:::::::::::::::+=**=*+##%#**###*+*#+##=++*         
           *=*++##++#*+#%*-........................::::::::::::===#+=*+#%%#+*###*=*#+#%+++*         
           #=#=+##++#++#%##+:.............:........::::::::::-*%-=#+=+*#%##+*%##*=##+#%++**         
           *+#=*##+=#=+*%%###*=:...........---:..::::::::::-**#%-+#=++*#%##+*%##++#*+%%***+*        
           ++#=*##+=#=**%%###+#*=+=:............::::::::==-:+*#*-**=++##%##+*%%#++#*+%%**#*+        
           **%=##%++#=**%%###+#*+#####*+-:.....:::::-+--::::+*#+=##=**#%%##+*#%#+*%*+%%#*%*+        
          +**%+#%%*+#=**%%###*#**#####+##-:++**+*+=+++-::...::*+*##+**#%%##**#%#+*%**%%#*##*+       
          **#%+#%#**#+#*%%###*##*#####*#-:---=-=:....:::::::::++##***##%%##*+#%#*#%#*#%%*#%*+       
          +*##*%%#**%+#*%%%%#*%#*#+------------=----==-::::::=++##**##%%%%%#+#%%*#%##*%%*+%%+*      
          **%#*%%#**%*##%%%%#*%#*%#+====-----===----------=::+**#%*###%%%%%#*##%*#%#%##%*+*%#=*     
         #**%*#%%#**%*##%%%%#**:-++#.------=+:===--======:::=**#%%*##%%%%%%%**%#*#%#%%*%*+*#%+=+    
         *+#%+#%%*#*%###%%*:...=*+*..+====++:.:====---=:...-+**#%#*##%*.+*#%#*%#%#%##%#*#**-%#=+    
         +*##*%%%*%#%%###%-...=*+*:.:+==+++:..-=-=+====:.-=-**##%*##%%+....:=+#%##%#*%%*#*+ *%*=+   
        *++%**%%#*%%%%*##%-.-:*+*-.-=++====..:-:--=++==:-::+**##@*##%%=.........=#%%*#%#**+# %#+=*  
        ++*%*#%%**%%=####%*=.#++=:-----==-...::----==-:...-#*##%@*##%+......--:=-+%%**%%*+** +#*+=  
        +=##+#%#+#%%:.*##%%:++++====--=--....::-----=.....***##%%##*-...:---::::-*%%#+%%#*++  ##+=+ 
       +++%**%##+#%*:..+##%**++=....=---:...-.:-=----....+#**####%-..:-:::::::::-*%%%+*%%*+*  *##+= 
       +=##+*###+#%=....+#%%+++=.....=::...-..:-=::-=:..:#**##%=*:..::....::::::-##%%*+%%#+#*  ##++ 
      *=+#*+#*%++#*:....:=#%%++-......::...+..::........#**##*+:.:::-:......::::-*#%%#=%##*=#   #*++
      +-##+**#%=+#-.....::-%%%+:......::...=...........-*+*##=::::::-:.......:::-+*%%#++%##+++  ##*=
     #==#*=**##=*+......--=**%#:..::::::...=...........*++##+:::::::-:.......::::=*#%#*=###*-+   #**
     +-*#++**#==+-......--=****:::::::::::.-..........++*#**=::::::::.........:::-+*%##=+###+=+  #**
     +=##=**##-=+......:--=*##*::::::::-.::-........:=#####*:::::::--.........::::=+###==####=*  =#*
    -++%++*##+-=.:-:::::---*##*::::::.::..:-:::::::::=####*=:::::::-:..........:::-=###+=+###+*  =#*
    =+*#=*+##=-=:....:-=+-:###*:......::..::.....::::=#####::::::::-:...........:::=#%#*=*##%*++ *#*
     *#*+**##=-+##+-::::-:.#***-......:-..:.........-#####=::::::::-...........-::-:*%##+*-%%#+* ##*
     *#+**#%*==+###*##=-=:.****-:.....::..-.........-####%:::::::::=--:::::::::...::=%##** #%#***## 
      #+#*#%*==*##**##-:-:.+***=-:....:...+.........=###*#:..::::::-:...........:=++#%%#** %%%**##  
      *+###%*++*##*###+:-:.=++*+:.....-...+......:.:****#::....::::+==----==+*##+*#**#%#** *%%*#*   
      **###%#++###*###*::---*+**-....:-...:......-.:#***%:.....:::--:::::::+####+*#**#%#** +%%**    
      **#%#%#*+#######*::::=+===.....::..-........::****=:.....:=#-::::::::+#%%**##*+%%#*  -%##     
       *#%##%*+#####%#*-:::-====:....::..=........:=-::--.....=##%::::::::-*%%#**##*=%%*#  =%*#     
       *#%%#%*+*%###%#*=:::--..-*#****=::+....::--*-..:=###*####*%::::::::=#%%#+*## %%**   *#*      
        ##%###+*%%##%#*=::+**--+**++++++***********-::-*#*******%@#-::::::=#%#***% +%#*    ##       
        ##%%###*#%###%*=:+*#*##*+++++++++++++++**************###**#%+:::::=%%***# +##*    +#+       
          #%%#+#*%%#+%#++##****####*********************##%##*#****#%+-::-+%#*++ ***     +##        
           #%% *##%## #%*#****##+****##*###*#%*#*###**##%*###*##***#%#*::-#**   ##*      **         
             *%++##%#*#*#****##******#*###**#########*#######**%****####-=#*  -#+                   
                  ##%#+*#****##+**+*#%*##***#############%####*##****####+                          
                   *#+*#****#%+**+*###*##***#*###*#######%####*#%****####%                          
                  %***#*****#******#%*##****#*###*#%**###%########****%*##%                         
                 #***#*****#%+****##%*#**+*#%*##**#%**###########%*#**##*##%                        
                #***#****+*%+*****#%****++*#%*##**#%****############***%*##%%                       
               *#+*##+**++##*****##%***++**#%*###*#%*****#%####*#####**#%*##%#                      
              +#+*##*++++*%*****###****++*#########%*****#%*###*##%###**#####%*                     
             +#+*###+++++#*++***##%+**++**##*######%*****#%*##***#####**#%#####                     
            *#+**##*++++*#*++**####+*+++*###*######%+*****#*#*****####**########                    
            #+**##*++++*#*++**###%*++++*###%*######%+*****#*******###***##%#####%                   
           #*+*###*++++*#*+**####%*+++**###@*######%+*****##******###***###%####%#                  
          #*++*##*++++*##++**####*++++*####%*######%+*****##*******##****########%#                 
         #*++**##++++**##+**#####*++++*#####*#######******##*******##*****########%                 
        #**++*##*+++**##*+*#####%*++++*####**#######*******#+*++***##*****##%#######                
        **+++*##+++**###+**######*+++**#####*#######**#****#*++++**###*****###*######               
        #+*++*%*+++**###+*#######++++**####***######**##***#*++++**###******#%**#####               
       #***+*#%+++**###*+*#######++++**###%++**#####%*###**##++++**###******##%**#####              
      =#***+*#*+++**##%+**#######++++***##%++***####%+*###*##++++**##%**+***##%*****#%              
      #+***+*%++++**###+*#######*++++***##%++****####**#####*++++**###*+++***##%*****##             
     =#+****#*+++***##*+*#######*++++***##%++*****###**######*+++**####++++**###******##            
     %******#++++***#%+**#######+++++***##%+++*****###*######*++++**##%++++***###*****#%            
     #+*#***#+++++**#%+**#######+++++***##%+++******%#*######*++++***#%+++++**###*+****##           
    +*+*#**#*+++++**##+**#######++++++***##*++++****##+*#####*+++++**##*++++***###*+++**/

addHook("PlayerThink", function(p)
	if not mapheaderinfo[gamemap].gd22 then return end
	p.mo.flags = $|MF_NOGRAVITY
	p.powers[pw_nocontrol] = 2
	p.fovadd = -100<<16
	
	if p.playerstate == PST_DEAD then
		
		p.mo.momx = 0
		p.mo.momz = FRACUNIT*2/3
		p.mo.flags2 = $|MF2_DONTDRAW
		if not p.mo.gddie then
			S_StartSound(pmo,sfx_brakrx)
			local boom = P_SpawnMobjFromMobj(p.mo,0,0,0,MT_BOSSEXPLODE)
			boom.scale = p.mo.scale*2
			p.mo.gddie = true
		end
	else
		p.mo.momx = 18<<16
		P_MoveOrigin(p.mo,p.mo.x,128<<16,p.mo.z)
		
		if p.mo.gdship then
			
			if p.cmd.buttons & BT_JUMP then
				P_SetObjectMomZ(p.mo, 2<<16, true)
			else
				P_SetObjectMomZ(p.mo, -2<<16, true)
			end
			
		else
		
			if P_IsObjectOnGround(p.mo) then
				
				if p.cmd.buttons & BT_JUMP then
					P_SetObjectMomZ(p.mo, 24<<16)
				end
				
			else
				
				P_SetObjectMomZ(p.mo, -3<<16, true)
				
			end
		end
		
		if p.mo.gdshipcd then
			p.mo.gdshipcd = $-1
		end
	end
	
end)

addHook("PostThinkFrame", do
	if not mapheaderinfo[gamemap].gd22 then return end
	
	for p in players.iterate do
		if p.mo.gdship then
			p.mo.state = S_PLAY_NIGHTS_FLY
			p.mo.frame = 0
			p.drawangle = ANG30
		else
			p.mo.state = S_PLAY_ROLL
			if p.mo.skin == "sonic" 
			or p.mo.skin == "knuckles" 
			or p.mo.skin == "metalsonic"
				p.mo.frame = 4
			else
				p.mo.frame = 1
			end
			p.drawangle = -ANGLE_90 + ANG30
		end

		if p == displayplayer
			P_TeleportCameraMove(camera, p.mo.x + 200<<16, p.mo.y - 1000<<16, p.mo.z + 100<<16)
			camera.angle = ANGLE_90
			camera.aiming = 0
		end
		
		
		if P_IsObjectOnGround(p.mo) then
			if p.mo.gdship then
				p.mo.rollangle = 0
			else
				p.mo.rollangle = fixangle(fixceil(anglefix($)/90) * 90)
			end
		else
			if p.mo.gdship then
				p.mo.rollangle = FixedMul(p.mo.momz,ANG2)
			else
				p.mo.rollangle = $-ANG10-ANG2
			end
		end
	
	end
end)

addHook("TouchSpecial", function(m,p)
	if not mapheaderinfo[gamemap].gd22 then return end
	
	if not p.gdshipcd then
		
		if p.gdship then
			p.gdship = nil
		else
			p.gdship = true
		end
		
		p.gdshipcd = TICRATE
	end

end,MT_NIGHTSBUMPER)

/**************++*+++********************########################***************+++++++++++++++++++++
#####*#****************************###############################************++++++++++++++++++++++
##########******************#####################################************+++++++++++++++++++++++
################################################%%%############*************++++++++++++++++++++++++
############################################%%%%%##############***********++++++++++++++++++++++++++
########################################%%%%%%%%%#############*********+++++++++++++++++++++++++++++
****#####################%%########%%%%%%%%%%%%##############********+++++++++++++++++++++++++++++++
+*********################%%#%%%%%%%%%%%%%%%%%###############******+++++++++++++++++++++++++++++++++
====+++++*****###**############%%%%%%%%%%%%%%##############********++++++=========++++++++++++++++++
---==+++**************+++++++#%%%%%%%%%%%%%%%%%################******+++++++++++++++++++********++++
****###%%%%%%%%%%%%%%##**####***%@@@@@@@@@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%########%%%%%%%%%%%%%%%%%%#
***###%%%%%%%%%%%%%%%%%%##***#****%@@@@@@@@@@@%+=##++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#
###%%%%@@@@%%%%%%@@@@@@@@%%###%%#%%%@@@@@@@@@@%***+++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##
#%%%%@@@@@@@@@%%@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####
*###%%%%%%%%%%%%%%%%#########%%######*%%%%%%%%%%##############################**********************
*###########%%%%#**+++++++++++++*#+**++#%########*****************************++++++++++++++++++====
##*+##%%%%****+****++++++++**#####**==+*########******************************+++++++++++++++++=====
#*+%%+--:-+++++++++*%%%%%%%%%%%%%%%%%%@@@#*####********************************+++++++++++++++++====
#%%%%%%#%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%*#*********************************++++++++++++++======
%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@#********************************++++++++++++++======
##%%%%%########%%###%%%%%%%%%%%%%%%%%%@@@@@@@@@@%******************************++++++++++++++=======
%%%%%%#####%%%%%%%######%%%%%%%%%%%%%%%@@@@@@@@@@%******************************++++++++++++========
%%%%%%#####*####%%%#######%%%%%%%#%%%%%%%%@@@@@@@@#*****************************++++++++++++========
@@@%%##******###*##%%%###########%%%###%%####%@@@%#*********************++++***+++++++++++++========
%@%%##*****#%#%%%##############%%%%%%#*#####*******************+==-==++***++++=..:++++++++++========
%%%##****####%%%@%%%%%#######%%@@@%#%#######*********************+---::::-=+++-=+++++++++++++=======
####******###**###%%%%%#####%%%%%%%#########*******************++####%%%%%%%#+=+**+++++++++++=======
#*****++**########%%%%%%###%%%%%%%%#########*****************#%@@@%%%@@@@%+..-=+**+++++++++++=======
#*****+++**#####%%%%%%#####%%%%%%%%%%#######*****************#%%%%#*#%##**+++==-:=++++++++++========
##****+++***##############%%%%%%%%%#########******************##%%##%@%#%@@%#*****+++++++=+=========
*#****++++***########%%%##%%%%%%%######*####***************++*##@@##%@%##@@@@@%%#**+-+++============
***************######*###############***####************+++:::*#%@##%@%##+..+%@%%#***++=============
#*************#########%%#****######****#####***********++++*#%%%@#*%@%###++=+++#%%#*+==============
+************#######################***######***********+++*##%#%@%*%@%#%@#******++**+==============
=+*********#########################***######**********+++++*#%%@@@#*%@%#@@@@%##***+++==============
=++********#########################***#**###************+++*##%%@@%#@@%%@@@@@@@%#****+=============
=+++*******####%%*******#**#*%%%###*******###*********+***+++*#%%@@%*@@@%@*+**###%%##**=============
=+++*******####%@@@@%%#*##%%@%%%##*******#####********++++++++*%%@@%*%@@%@%***+++++=*#*+--==========
=+++********####%@@@@@@@@@%%@%%###*******#####********++++++++*%@@@@#@@@@@@@@%#*******+++--=========
=++*********#####%%@@@@@@@%%%%%##********####*********+++++++++%@@@@@@@@@@@@@@@@%******+=..=========
=++*********######%%%%@@@%%%%%%##**********###********+++++++++#%@@@@%%@@@%@@@@@@#*%#****+=-========
=+**********#####*##%%%##%%%%%##*+**********##********+++++++++*#%%#*#**#*##%###%#=*%###***+========
=+***********####***##%%%%%%####++++******************+++++++++*#%%%*%#@%@#%@%%%%%++#%##***=========
=+****##******###****##########*+++++********#*******++++++++++*%%@%%%%%%%%@%@%%%%######**+=========
=+****#####****################+++++****************+++++++++++*%@%%%%%%@@@@@@@%%%%%####**==========
=+*****#####***###############++++++****************++++++++++++%@@@%%@@@@@@@@@%%%%####**+==========
=++++***######***############%%*+++++**************+++++++++++++#%@@%%%%%%@@@%%%#######**===========
===+++**########**#########*%@@@#+++**++***********+++++++++++++#@@%%%%@%%@@@@@%%%###***+===========
===++****##################**@@@@%*++*+++*********++++++++++==++==++++++====+++++******+============
=+++*****##################*=%@@@%%*++++++*******+++++++++++++++++=+++++++==++*********+============
**********#################+*%@@%#%%+++++++******++++++++++++++++++==+++****************============
####******#################*+#%%#####++++++*****+++++++++++++++++++++++++++*****###*###*==========+=
#**+******##%%%%%%%%%%%%%##+-+%######=-=-=+*****++++++++++++++++++++===++++*******#####*+=======+===
#*+**#####%%%%%%%%%%%%%%##*=-:*##%%%%*......-=++++++++++++++++++++++==+++++*******#####**+=====++===
#*====+**##%%%%%%%%%%%%%##+-::-###***#-...........:+++++++++++++++++=+==++++******#####**+==++++++++
##+++++++**#%%%%%%%%%%%###+==-:+***####..............+++++++++++++++++++++++******#####**+++++++++++*/

freeslot("MT_GDSPIKE", "S_GDSPIKE", "SPR_GDSK")

mobjinfo[MT_GDSPIKE] = {
	//$Name GD Spike
	//$Sprite GDSKA0
	doomednum = 3264,
	spawnstate = S_GDSPIKE,
	spawnhealth = 9999999,
	flags = MF_NOGRAVITY|MF_SPECIAL,
	radius = 6*FRACUNIT,
	height = 20*FRACUNIT
}

states[S_GDSPIKE] = {SPR_GDSK, A, -1, nil, 0, 0, S_GDSPIKE}

addHook("MapThingSpawn", function(mobj, thing)
	mobj.z = $ + (22*FRACUNIT*P_MobjFlip(mobj))
end, MT_GDSPIKE)

addHook("TouchSpecial", function(mobj, toucher)
	P_DamageMobj(toucher, nil, nil, DMG_INSTAKILL)
	return true
end, MT_GDSPIKE)

addHook("MobjMoveBlocked", function(mobj, target, line)
	if not mapheaderinfo[gamemap].gd22 then return end
	P_DamageMobj(mobj, nil, nil, DMG_INSTAKILL)
end, MT_PLAYER)
